package cn.itcast.bos.web.action.base;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Actions;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionContext;

import cn.itcast.bos.domain.take_delivery.Promotion;

@Controller
@Namespace("/")
@ParentPackage("json-default")
@Scope("prototype")
@Actions
public class ImageAction extends BaseAction<Object> {
		
	private File imgFile;
	private String imgFileFileName;
	private String imgFileContentType;
	
	
	public void setImgFile(File imgFile) {
		this.imgFile = imgFile;
	}


	public void setImgFileFileName(String imgFileFileName) {
		this.imgFileFileName = imgFileFileName;
	}


	public void setImgFileContentType(String imgFileContentType) {
		this.imgFileContentType = imgFileContentType;
	}


	@Action(value="image_upload",
			results={@Result(name="success",type="json")})
	public String upload(){
		System.out.println("文件;"+imgFile);
		System.out.println("文件名："+imgFileFileName);
		System.out.println("文件类型："+imgFileContentType);
		
		String savePath = ServletActionContext.getServletContext().getRealPath("/uploade/");
		String saveUrl = ServletActionContext.getRequest().getContextPath()+"/uploade/";
		
		
		UUID uuid = UUID.randomUUID();
		
		String ext = imgFileFileName.substring(imgFileFileName.lastIndexOf("."));
		String randomFileName = uuid+ext;
		
		try {
			FileUtils.copyFile(imgFile, new File(savePath+"/"+randomFileName));
			
			Map<String , Object> result = new HashMap<String , Object>();
			result.put("error", 0);
			result.put("url", saveUrl+randomFileName);
			
			ServletActionContext.getContext().getValueStack().push(result);
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		return SUCCESS;
	}
	
	@Action(value="image_manage",
			results={@Result(name="success",type="json")})
	
	public String manage(){
		String rootPath = ServletActionContext.getServletContext().getRealPath("/")+"uploade/";
		String rootUrl = ServletActionContext.getRequest().getContextPath()+"/uploade/";
		
		List<Map<String, Object>> fileList = new ArrayList<Map<String, Object>>();
		File currentPathFile = new File(rootPath);
		for (File file : currentPathFile.listFiles()) {
			Map<String, Object> hash = new HashMap<>();
			String fileName = file.getName();
			if (file.isDirectory()) {
				hash.put("is_dir", true);
				hash.put("has_file", (file.listFiles() != null));
				hash.put("filesize", 0L);
				hash.put("is_photo", false);
				hash.put("filetype", "");
			} else {
				String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
				hash.put("is_dir", false);
				hash.put("has_file", false);
				hash.put("filesize", file.length());
				hash.put("is_photo", true);
				hash.put("filetype", fileExt);
			}
			hash.put("filename", fileName);
			hash.put("datetime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file.lastModified()));
			fileList.add(hash);
		}

		Map<String, Object> result  = new HashMap<String,Object>();
		result.put("moveup_dir_path", "");
		result.put("current_dir_path", rootPath);
		result.put("current_url", rootUrl);
		result.put("total_count", fileList.size());
		result.put("file_list", fileList);
		
		ActionContext.getContext().getValueStack().push(result);
		return SUCCESS;
	}
	
	
}
